import numpy as np


def print_arr_attr(arr):
    print("arr: ", arr)
    print("arr.shape: ", arr.shape)  # 数组的维度，表示数组在每个轴上的大小。对于二维数组（矩阵），表示其行数和列数。
    print("arr.ndim: ", arr.ndim)  # 数组的秩（rank），即数组的维度数量或轴的数量。
    print("arr.dtype: ", arr.dtype)  # 数组中元素的数据类型。
    print("arr.size: ", arr.size)  # 数组中元素的总个数，等于 ndarray.shape 中各个轴上大小的乘积。
    print("arr.flags: ", arr.flags)  # 包含有关内存布局的信息，如是否为 C 或 Fortran 连续存储，是否为只读等。
    print("arr.data: ", arr.data)  # 实际存储数组元素的缓冲区，一般通过索引访问元素，不直接使用该属性。
    print("arr.itemsize: ", arr.itemsize)  # 数组中每个元素的大小，以字节为单位。


arr = np.array(1)
print_arr_attr(arr)

print("*" * 20)
arr = np.array([1, 2, 3])
print_arr_attr(arr)

print("*" * 20)
arr = np.array([1, 2, 3, 4, 5], ndmin=2)
print_arr_attr(arr)

print("*" * 20)
arr = np.array([1, 2, 3], dtype=complex)
print_arr_attr(arr)

print("*" * 20)
arr = np.array([[1, 2], [3, 4]])
print_arr_attr(arr)
